Optical codes have widespread applications. For example, optical codes can be used to identify a class of objects (e.g., merchandise) or unique items (e.g., patents). As a result, optical codes are found on a wide variety of objects, such as goods, company assets, and documents, and help track production at manufacturing facilities and inventory at stores (by scanning items as they arrive and as they are sold).
An optical code is essentially a machine-readable representation of information in a visual format on a surface of the object (i.e., a barcode). Some optical codes use a dark ink on a white substrate to create high and low reflectance upon scanning. Based on the symbology being used (e.g., UPC, Code 39, Code 128, and PDF417), an optical code may comprise data characters (or codewords in the case of, e.g., PDF417) and/or overhead characters represented by a particular sequence of bars and spaces (which may have varying widths).
Optical code readers are used to capture optical codes or other symbols or information imprinted on various surfaces in order to transmit the information encoded in the optical code or symbol to a host processing device. Two types of commonly used optical code readers are flying spot scanners and imaging based scanners. Flying spot laser scanners generally obtain optical code information by sweeping a laser spot across the optical code. The laser spot may be generated by a laser light source which is then directed towards an oscillating reflecting surface, typically a mirror. The light reflected from the optical code is collected by a photosensor, which outputs an analog waveform representing the relative spacing of the bars in the optical code. The analog signal may then be digitized and decoded into data representing the information encoded in the optical code.
Imaging based scanners include solid state image circuitry, such as charge coupled devices (CCDs) and complementary metal-oxide semiconductor (CMOS) devices, and may be implemented using a one-dimensional or two-dimensional imaging array of photosensors (or pixels) to capture the optical code. One-dimensional CCD readers capture a linear cross section of the optical code, producing an analog waveform whose amplitude represents the relative darkness and lightness of the optical code. Two-dimensional CCD readers capture an entire two-dimensional image. Generally only select portions of the image data are stored and processed. The select portions of the image data are sometimes referred to as virtual scan lines because the select portions are analogous to a signal generated by reflection of a moving laser beam spot scanning across the optical code.
Traditionally, imaging systems that process captured images using sub-regions, such as virtual scan lines, process each sub-region indiscriminately. Even though only certain sub-regions will be at least partially coincident on an optical code (and therefore contain decodable data), each sub-region consumes approximately the same amount of computing resources. Thus, computing resources may be wasted processing sub-regions having a low likelihood of containing decodable data. Accordingly, the present inventor has identified a need to prioritize an order in which to process the sub-regions for decodable data so that sub-regions that are most likely to contain decodable data are processed first.